package com.servicecloud.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Component;

import com.servicecloud.entities.Dept;

import feign.hystrix.FallbackFactory;

/**
 * 作用： 服务降级处理 Hystrix，如果调用该服务出现异常，将会在这里进行降级处理
 * 
 * @author Gavin
 * @time:2019年7月29日
 */
@Component // 不要忘记添加，不要忘记添加
public class DeptClientServiceFallbackFactory implements FallbackFactory<DeptClientService> {
	@Override
	public DeptClientService create(Throwable throwable) {
		System.out.println("---------由于这里的异常是走的hystrix内部的异常，所以message被封装过了的。所以这里要返回的信息应该是根据异常类型自定义返回错误信息");
		System.out.println(throwable.getMessage());
		System.out.println("----------");
		throwable.printStackTrace();
		System.err.println(33333);
		return new DeptClientService() {
			@Override
			public Dept get(long id) {
				return new Dept().setDeptno(id).setDname("该ID：" + id + "没有没有对应的信息,服务降级处理-客户端降级处理")
						.setDb_source("服务异常，不能提供服务了");
			}

			@Override
			public List<Dept> list() {
				return null;
			}

			@Override
			public boolean add(Dept dept) {
				return false;
			}
		};
	}
}
